package producto;

import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Test;

public class ProductoTest {
	
	Presentacion presentacionMock01 = mock(Presentacion.class);
	Producto miProducto01 = new Producto(presentacionMock01,"","","","");
	
	Presentacion unaPresentacion = new Presentacion("098765431",10,new Ubicacion(),"xx",1,2,0,5);
	Producto miProducto02 = new Producto(unaPresentacion,"","","","");
	
	@Before
	public void setUp(){
		when(presentacionMock01.getPrecioDeVenta()).thenReturn(10.0);
		when(presentacionMock01.getCantidadEnStock()).thenReturn(10);
		when(presentacionMock01.getStockCritico()).thenReturn(10);
		when(presentacionMock01.getStockMinimo()).thenReturn(10);
		
	}

	@Test
	public void testGetPresentacion() {
		assertEquals(presentacionMock01,miProducto01.getPresentacion());
	}
	@Test
	public void testPrecioUnitarioDeVenta(){
		assertEquals(10,miProducto01.precioUnitarioDeVenta(),.01);
	}
	@Test
	public void testGetCantidadEnStock() {
		assertEquals(10,miProducto01.getCantidadEnStock());
	}
	@Test
	public void testGetStockCritico() {
		assertEquals(10,miProducto01.getStockCritico());
	}
	@Test
	public void testGetStockMinimo() {
		assertEquals(10,miProducto01.getStockMinimo());

	}
	@Test
	public void testDuplicar(){
		Producto copia = miProducto02.duplicar();
		assertEquals(miProducto02.getCodigoDeBarras(),copia.getCodigoDeBarras());
	}
	@Test
	public void testIncrementarStockInt(){
		miProducto02.incrementarStock(10);
		assertEquals(20,miProducto02.getCantidadEnStock());
	}
	@Test
	public void testIncrementarStock(){
		miProducto02.incrementarStock();
		assertEquals(11,miProducto02.getCantidadEnStock());
	}
	@Test
	public void testDecrementarStock(){
		miProducto02.decrementarStock();
		assertEquals(9,miProducto02.getCantidadEnStock());
	}

	

}
